<?php
namespace classlib;
class input {
	/**
	 * 设置信息过滤处理函数，目前为空函数
	 * @param mix $chk_data
	 * @return mix
	 */
    public static function _secure_filter($data) {
    	if (is_string($data) && @get_magic_quotes_gpc()) {
    		$data = stripslashes($data);
    	} else if (is_array($data)) {
    		foreach ($data as &$item) {
    			$item = self::_secure_filter($item);
    		}
    	}
    	return $data;
    }
    
	/**
	 * 获取通过GET方式提交过来的数据
	 * @param string  $name
	 * @param boolean $secure
	 * @return mix
	 */
    public static function get($name, $secure=true) {
        if(!isset($_GET[$name])) {
            return false;
        }
        return (($secure)? self::_secure_filter($_GET[$name]):$_GET[$name]);
    }
    
	/**
	 * 获取通过POST方式提交过来的数据
	 * @param string $name
	 * @param boolean $secure
	 * @return mix
	 */
    public static function post($name, $secure=true) {
        if(!isset($_POST[$name])) {
            return false;
        }
        return (($secure)? self::_secure_filter($_POST[$name]):$_POST[$name]);
    }
    
    /**
     * 获取GET和POST过来的数据
     * @param string $name
     * @param boolean $secure
     * @return mix
     */
    public static function get_post($name, $secure=true) {
    	$data = isset($_GET[$name])? $_GET[$name]:(isset($_POST[$name])? $_POST[$name]:null);
    	return (($secure)? self::_secure_filter($data):$data);
    }
    
	/**
	 * 获取通过Cookie方式提交过来的数据
	 * @param string $name
     * @param boolean $secure
     * @return mix
	 */
    public static function cookie($name, $secure=true) {
        if(!isset($_COOKIE[$name])) {
            return false;
        }
        return (($secure)? self::_secure_filter($_COOKIE[$name]):$_COOKIE[$name]);
    }
    
    /**
     * 获取所有的参数资料信息
     * @param boolean $secure
     * @return array
     */
    public static function args($secure=true) {
    	foreach ($_POST as &$post) {
    		$post = self::_secure_filter($post);
    	}
    	foreach ($_GET as &$get) {
    		$get = self::_secure_filter($get);
    	}
    	return array_merge($_GET, $_POST);
    }
    
	/**
	 * 获取直接POST提交的流数据
	 * @return string 包括json、xml、二进制流
	 */
	public static function stream() {
		$data = file_get_contents('php://input');
		return $data;
	}
	
	/**
	 * 对html实体的过滤转换
	 * @param string $html
	 * @return string
	 */
	public static function entity_replace($html) {
    	$html = str_replace(
    		array('&nbsp;', '&lt;', '&gt;', '&amp;', '&quot;','&reg;', '&copy;', '&trade;', '&mdash;', '&middot;'),
    		array(' ', '<', '>', '&', '"', '©', '®', '™', '——', '·'), $html);
		return $html;
    }
    
    /**
     * 初始化分页资料
     * @return array $start $limit
     */
	public static function get_limit() {
		$limit	  = array(0, 0);
		$limit[0] = intval(self::get_post('start'));
		if($limit[0] < 1) {
			$limit[0] = 0;
		}	
		$limit[1] = intval(self::get_post('limit'));		
		if($limit[1] < 1 || $limit[1] > 2000) {
			$limit[1] = 50;
		}
		return $limit;
	}
    
	/**
	 * 通过一个字符串记录其Hash之后的数值
	 * @param string $str
	 * @return int
	 */
	public static function hashstr($str) {
		$hash = 0;
		$nlen = strlen($str);
		for ($i=0; $i < $nlen; $i++) {
			$hash += ord($str[$i]);
		}
		return $hash % 2147483647;
	}
	
	/**
	 * 通过一个字符串记录其Hash之后的数值
	 * @param string $str
	 * @return int
	 */
	public static function strhash($str) {
		$hash = 0;
		$nlen = strlen($str);
		for ($i=0; $i < $nlen; $i++) {
			$hash += ord($str[$i]);
		}
		return $hash % 2147483647;
	}
}